package com.mytijian.task.repository;

import com.mytijian.task.enums.TaskStatusEnum;
import com.mytijian.task.model.SubTask;
import com.mytijian.task.model.Task;
import com.mytijian.task.repository.model.GroupExecutorDTO;
import com.mytijian.task.model.TaskValue;
import com.mytijian.task.repository.model.TaskIdentifyDTO;
import com.mytijian.task.model.TaskIdentify;

import java.util.List;

public interface TaskRepository {
    int insert(Task task);

    void batchInsert(List<SubTask> subTasks);


    List<Task> getTasksByIds(List<Integer> ids);

    List<SubTask> getSubTaskInId(Integer taskId, Integer beginId, Integer endId);

    List<SubTask> getSubTaskByStatus(Integer taskId, List<Integer> inStatus);
    void processFail(Integer subTaskId, Integer failScene, String failText);

    void processSuccess(Integer taskId, List<Integer> subTaskIds);

    List<Integer> getSubTaskIds(Integer taskId,Integer beginSubTaskId, Integer endSubTaskId, List<Integer> inStatus);

    /**
     * 存在则更新
     * @param taskIdentify
     * @param taskValue
     */
    void save(TaskIdentify taskIdentify, TaskValue taskValue, String ip);

    TaskStatusEnum completeStatus(List<TaskIdentifyDTO> taskIdentifyDTOS);

    List<TaskIdentifyDTO> getTaskIdentifies(Integer taskId);
    void updateTaskStatus(Integer taskId, Integer taskStatus);

    List<GroupExecutorDTO> getGroupExecutorsAll();

    void saveGroupExecutors(GroupExecutorDTO executorDTO);
}
